﻿
using System;
using System.Runtime.Serialization;
using V82;
using V82.Перечисления;//Ссылка;
namespace V82.Перечисления//Ссылка
{
	///<summary>
	///Вид начисления НДС (реализация, налоговый агент, НДС с авансов)
	///</summary>
	[DataContract]
	public enum НДСВидНачисления
	{
		[NonSerialized]
		ПустаяСсылка = - 1,
		[EnumMember(Value = "{\"Ссылка\":\"6197fccb-188d-4754-97d8-934c9fa78569\", \"Представление\":\"РеализацияСНДС\"}")]
		РеализацияСНДС = 0,//Реализация с НДС
		[EnumMember(Value = "{\"Ссылка\":\"5270b941-212f-4cd0-ad87-4458517aa183\", \"Представление\":\"РеализацияЕНВД\"}")]
		РеализацияЕНВД = 1,//Реализация ЕНВД
	///<summary>
	///Реализация без НДС (не ЕНВД)
	///</summary>
		[EnumMember(Value = "{\"Ссылка\":\"0abdbbb2-9e8e-4b2c-812c-c21ae726fc0a\", \"Представление\":\"РеализацияБезНДС\"}")]
		РеализацияБезНДС = 2,//Реализация без НДС
		[EnumMember(Value = "{\"Ссылка\":\"019836d0-a50a-410b-a67c-613bca447e4f\", \"Представление\":\"Реализация0\"}")]
		Реализация0 = 3,//Реализация со ставкой 0%
		[EnumMember(Value = "{\"Ссылка\":\"81d8d62a-1d87-41a8-89dc-3145d8448a40\", \"Представление\":\"НДСсАвансов\"}")]
		НДСсАвансов = 4,//НДС с авансов
	///<summary>
	///НДС начислен к уплате (налоговый агент, внутренняя реализация)
	///</summary>
		[EnumMember(Value = "{\"Ссылка\":\"c764dba6-c6be-4212-b2a7-106119cf48de\", \"Представление\":\"НДСНачисленКУплате\"}")]
		НДСНачисленКУплате = 5,//НДС начислен к уплате
		[EnumMember(Value = "{\"Ссылка\":\"2c5e350f-82b3-4fb3-8bd2-11b7fbec2a79\", \"Представление\":\"НДСВосстановлен\"}")]
		НДСВосстановлен = 6,//НДС восстановлен
	}
	public static partial class НДСВидНачисления_Значения//:ПеречислениеСсылка
	{
		public static readonly Guid РеализацияСНДС = new Guid("4c93d897-a79f-6985-4754-188d6197fccb");//Реализация с НДС
		public static readonly Guid РеализацияЕНВД = new Guid("584487ad-7a51-83a1-4cd0-212f5270b941");//Реализация ЕНВД
		///<summary>
		///Реализация без НДС (не ЕНВД)
		///</summary>
		public static readonly Guid РеализацияБезНДС = new Guid("1ac22c81-26e7-0afc-4b2c-9e8e0abdbbb2");//Реализация без НДС
		public static readonly Guid Реализация0 = new Guid("3b617ca6-44ca-4f7e-410b-a50a019836d0");//Реализация со ставкой 0%
		public static readonly Guid НДСсАвансов = new Guid("4531dc89-44d8-408a-41a8-1d8781d8d62a");//НДС с авансов
		///<summary>
		///НДС начислен к уплате (налоговый агент, внутренняя реализация)
		///</summary>
		public static readonly Guid НДСНачисленКУплате = new Guid("6110a7b2-cf19-de48-4212-c6bec764dba6");//НДС начислен к уплате
		public static readonly Guid НДСВосстановлен = new Guid("b711d28b-ecfb-792a-4fb3-82b32c5e350f");//НДС восстановлен
		public static НДСВидНачисления Получить(this НДСВидНачисления Значение, byte[] Ссылка)
		{
			return Получить(Значение, new Guid(Ссылка));
		}
		public static НДСВидНачисления Получить(this НДСВидНачисления Значение, Guid Ссылка)
		{
			if(Ссылка == РеализацияСНДС)
			{
				return НДСВидНачисления.РеализацияСНДС;
			}
			else if(Ссылка == РеализацияЕНВД)
			{
				return НДСВидНачисления.РеализацияЕНВД;
			}
			else if(Ссылка == РеализацияБезНДС)
			{
				return НДСВидНачисления.РеализацияБезНДС;
			}
			else if(Ссылка == Реализация0)
			{
				return НДСВидНачисления.Реализация0;
			}
			else if(Ссылка == НДСсАвансов)
			{
				return НДСВидНачисления.НДСсАвансов;
			}
			else if(Ссылка == НДСНачисленКУплате)
			{
				return НДСВидНачисления.НДСНачисленКУплате;
			}
			else if(Ссылка == НДСВосстановлен)
			{
				return НДСВидНачисления.НДСВосстановлен;
			}
			return НДСВидНачисления.ПустаяСсылка;
		}
		public static byte[] Ключ(this НДСВидНачисления Значение)
		{
			return Ссылка(Значение).ToByteArray();
		}
		public static Guid Ссылка(this НДСВидНачисления Значение)
		{
			switch (Значение)
			{
				case НДСВидНачисления.РеализацияСНДС: return РеализацияСНДС;
				case НДСВидНачисления.РеализацияЕНВД: return РеализацияЕНВД;
				case НДСВидНачисления.РеализацияБезНДС: return РеализацияБезНДС;
				case НДСВидНачисления.Реализация0: return Реализация0;
				case НДСВидНачисления.НДСсАвансов: return НДСсАвансов;
				case НДСВидНачисления.НДСНачисленКУплате: return НДСНачисленКУплате;
				case НДСВидНачисления.НДСВосстановлен: return НДСВосстановлен;
			}
			return Guid.Empty;
		}
	}
}